package com.tjs.lucky.domain.activity.service.partake;

import com.tjs.lucky.domain.activity.model.req.PartakeReq;
import com.tjs.lucky.domain.activity.model.res.PartakeResult;
import com.tjs.lucky.domain.activity.model.vo.DisAwardInvoiceVO;

import java.util.List;

/**
 * @Author: 田佳澍
 * @Description: 抽奖活动参与接口
 * @DateTime: 2023/5/22 16:04
 **/
public interface IActivityPartake {

    /**
     * 查询活动参与历史记录
     * @param req
     * @return
     */
    PartakeResult queryActivityRecord(PartakeReq req);

    /**
     * 参与活动
     *
     * @param req 入参
     * @return 领取结果
     */
    PartakeResult doPartake(PartakeReq req);

    /**
     * 更新发货单MQ状态
     *
     * @param uId     用户ID
     * @param orderId 订单ID
     * @param mqState MQ 发送状态
     */
    void updateInvoiceMqState(String uId, Long orderId, Integer mqState);

    /**
     *  更新发奖状态
     * @param uId        用户ID
     * @param orderId    订单ID
     * @param grantState 发奖状态
     */
    void updateGrantState(String uId, Long orderId, Integer grantState);

    /**
     * 扫描发货单 MQ 状态，把未发送 MQ 的单子扫描出来，做补偿
     *
     * @param dbCount 指定分库
     * @param tbCount 指定分表
     * @return 发货单
     */
    List<DisAwardInvoiceVO> scanInvoiceMqState(int dbCount, int tbCount);
}
